package com.ynet.middleground.contract.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.BaseReqObj;
import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.contract.bean.AddContractTypeReq;
import com.ynet.middleground.contract.bean.DeleteContractTypeReq;
import com.ynet.middleground.contract.bean.QueryContractTypeBaseReqObj;
import com.ynet.middleground.contract.bean.UpdateContractTypeReq;
import com.ynet.middleground.contract.dto.ContractTypeDTO;

/**
 * @author liulx
 * @description 合约类型服务接口定义
 * @date 2020-04-06 03:30
 */
public interface ContractTypeService {

    /**
     * 查询合约类型列表
     *
     * @param queryReq 基础请求类
     * @return 合约类型信息列表
     */
    ServiceResult<List<ContractTypeDTO>> list(@Valid BaseReqObj queryReq);

    /**
     * 查询合约类型列表（附带业态id）
     *
     * @param queryContractTypeBaseReqObj 查询合约类型列表请求信息
     * @return 合约类型信息列表
     */
    ServiceResult<List<ContractTypeDTO>> listWithFormat(@Valid QueryContractTypeBaseReqObj queryContractTypeBaseReqObj);

    /**
     * 新增合约类型
     *
     * @param addContractTypeReq 新增合约类型请求类
     * @return 合约类型 id
     */
    ServiceResult<Integer> add(@Valid AddContractTypeReq addContractTypeReq);

    /**
     * 删除合约类型
     *
     * @param deleteContractTypeReq 删除合约类型请求类
     * @return 结果标志，以 success 字段值标识 true/false
     */
    ServiceResult delete(@Valid DeleteContractTypeReq deleteContractTypeReq);

    /**
     * 更新合约类型
     *
     * @param updateContractTypeReq 更新合约类型信息请求类
     * @return 结果标志，以 success 字段值标识 true/false
     */
    ServiceResult update(@Valid UpdateContractTypeReq updateContractTypeReq);

}
